package com.bite;



public class Date {
    public int year;
    public int month;
    public int day;
    //成员方法的定义: public void + 成员方法名() {}
    //相当于要写Date this
    //public void setDate(Date this,int year,int month, int day)//这里面的Date this 默认不写
    /*
    一个对象的生成有两步很重要:
        给对象分配内存
        调用合适的构造方法
     */
    //构造方法可以重载
    public Date() {
        this(2005,9,9);
        System.out.println("这是一个不带参数的构造方法");
    }
    public Date(int year,int month, int day) {//实例化一个对象的时候会自动调用构造方法
        this.year = year;
        this.month = month;
        this.day = day;
        System.out.println("这是一个构造方法");
        System.out.println("年: " + this.year +" 月: " + this.month + " 日: " + this.day);
    }
    //构造方法就是来初始化对象的成员的
    public void setDate(int year,int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }
    //this调用其他的构造方法的时候要写在第一行
    //这里面的成员变量默认要写this
    //this的类型:调用的对应的对象的非静态的成员方法和成员变量
    //this只能在成员方法中使用
    //this是一个隐藏的参数
    public void printDate() {
        System.out.println("年: " + this.year +" 月: " + this.month + " 日: " + this.day);
    }
    //在static 方法中用this会报错
//    public static void printDate1() {
//        System.out.println(this.day);
//    }
    public static void main(String[] args) {
        Date date1 = new Date(2005,9,10);
//        date1.setDate(2008, 8, 8);
//        date1.printDate();
//        Date date2 = new Date();
//        date2.setDate(2010, 9, 10);
//        date2.printDate();
//        Date date3 = new Date();
    }
}
